package org.wekit.engine.pvm.delegate;

import java.util.Map;
import java.util.Set;

/**
 * 运行范围参数定义
 * @author HuangWeili
 *
 */
public interface VariableScope {

	/**
	 * 获取变量
	 * @return
	 */
	Map<String, Object> getVariables();
	
	/**
	 * 根据key获取
	 * @param variableName
	 * @return
	 */
	Object getVariable(String variableName);
	
	/**
	 * 获取变量名
	 * @return
	 */
	Set<String> getVariableNames();
	
	/**
	 * 设置变量
	 * @param variableName
	 * @param value
	 */
	void setVariable(String variableName,Object value);
	
	/**
	 * 设置变量信息
	 * @param variables
	 */
	void  setVariables(Map<String, ? extends Object> variables);
	
	/**
	 * 是否有变量
	 * @return
	 */
	boolean hasVariables();
	
	/**
	 * 判断是否存在变量
	 * @param variable
	 * @return
	 */
	boolean hasVariable(String variable);
	
	/**
	 * 移除变量
	 * @param variable
	 */
	void removeVariables(String variable);
	
	/**
	 * 清理变量
	 */
	void clearVariables();
}
